using UniversalAdmin.Application.DTOs; // 引入数据传输对象定义，用于接口方法的返回值和参数

namespace UniversalAdmin.Application.Services; // 定义服务接口的命名空间

// 角色服务接口，定义角色相关的业务逻辑方法
public interface IRoleService
{
    // 异步获取所有角色列表
    Task<List<RoleDto>> GetRolesAsync();

    // 异步根据角色ID获取角色信息，返回可能为空的角色数据传输对象
    Task<RoleDto?> GetRoleByIdAsync(Guid id);

    // 异步创建角色，接收创建角色的数据传输对象，返回创建后的角色数据传输对象
    Task<RoleDto> CreateRoleAsync(CreateRoleDto dto);

    // 异步更新角色信息，接收角色ID和更新角色的数据传输对象，返回可能为空的更新后的角色数据传输对象
    Task<RoleDto?> UpdateRoleAsync(Guid id, UpdateRoleDto dto);

    // 异步删除角色，接收角色ID，返回是否删除成功的布尔值
    Task<bool> DeleteRoleAsync(Guid id);

    Task AssignPermissionsAsync(Guid roleId, List<Guid> permissionIds);
}